*===================================================================================*
* Ado-file: 	csxmpnlurt Version 1.0 
* Author: 		Chen Shao(陈志豪)
* Affiliation: 	Lanzhou University
* E-mail: 		chenzhh20@lzu.edu.cn
* License:      Mulan PSL v2
* Date: 		2025/2/17                                 
*===================================================================================*

capture program drop csxmpnlurt
program define csxmpnlurt
	version 16
	syntax varlist(min=1) [if] [in],id(varname) time(varname)
	 //面板数据平稳性检验
	di in blue "晨韶学妹向您报告："
	
	 //面板基础设定与长短属性判别(记录为dtatyp1)
	qui xtset `id' `time'
	local gapif=r(gaps)
	qui local numt=(r(tmax)+1-r(tmin))/r(tdelta)
	local maxlags=int(12*(`numt'/ 100)^(1/4))-1 //最大滞后差分项
	qui xtsum `id'
	local numid=r(n)
	if `numid'>`numt' {
		local dtatyp1 "短面板"
	}
	if `numid'<=`numt' {
		local dtatyp1 "长面板"
	}
	local nmax=`numt'*`numid'
	
	 //开始检验
	foreach var in `varlist' {
		local variable "`var'"
		di in yellow _n "---`variable'---"
		
		 //平衡属性判别(记录为dtatyp2)
		local type ""
		qui xtsum `var'
		if r(N) ==`nmax'{
			local dtatyp2 "平衡"
		}
		if r(N) !=`nmax'{
			local dtatyp2 "非平衡"
		}
		
		di in white "  该变量为`dtatyp2'的`dtatyp1'数据"
		local ordnum=1
		
		 //短面板的IPS检验
		if "`dtatyp1'" == "短面板" & `gapif'==0 {
			di in white "`ordnum'.IPS检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 27}"
			di _col(5) "检测类型" _col(25) "结果"
			di _col(4) "{hline 27}"
			qui xtunitroot ips `var',tr
			local p=r(p_zttildebar)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距项和时间趋势" _col(25) "`result'"
			qui xtunitroot ips `var'
			local p=r(p_zttildebar)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距项" _col(25) "`result'"
			di _col(4) "{hline 27}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 27}"
			di _col(5) "检测类型" _col(25) "结果"
			di _col(4) "{hline 27}"
			qui xtunitroot ips `var',tr demean
			local p=r(p_zttildebar)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距项和时间趋势" _col(25) "`result'"
			qui xtunitroot ips `var',demean
			local p=r(p_zttildebar)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距项" _col(25) "`result'"
			di _col(4) "{hline 27}"
			local ordnum=`ordnum'+1
		}
		
		 //长面板的IPS检验
		if "`dtatyp1'" == "长面板" & `gapif'==0 {
			di in white "`ordnum'.IPS检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 57}"
			di _col(5)"信息准则" _col(15) "检测类型" _col(35) "平均滞后差分阶数" _col(55) "结果"
			di _col(4) "{hline 57}"
			foreach infc in aic bic hqic{
				qui xtunitroot ips `var',l(`infc' `maxlags') tr
				local p=r(p_wtbar)
				while `p'<0.05{
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "非平稳"
					local p=0.05
				}
				di _col(5) "`infc'" _col(15) "带截距项和时间趋势" _col(35) r(lagm) _col(55) "`result'"
				qui xtunitroot ips `var',l(`infc' `maxlags')
				local p=r(p_wtbar)
				while `p'<0.05{
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "非平稳"
					local p=0.05
				}
				di _col(5) "`infc'" _col(15) "带截距项" _col(35) r(lagm) _col(55) "`result'"
			}
			di _col(4) "{hline 57}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 57}"
			di _col(5)"信息准则" _col(15) "检测类型" _col(35) "平均滞后差分阶数" _col(55) "结果"
			di _col(4) "{hline 57}"
			foreach infc in aic bic hqic{
				qui xtunitroot ips `var',l(`infc' `maxlags') tr demean
				local p=r(p_wtbar)
				while `p'<0.05{
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "非平稳"
					local p=0.05
				}
				di _col(5) "`infc'" _col(15) "带截距项和时间趋势" _col(35) r(lagm) _col(55) "`result'"
				qui xtunitroot ips `var',l(`infc' `maxlags') demean
				local p=r(p_wtbar)
				while `p'<0.05{
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "非平稳"
					local p=0.05
				}
				di _col(5) "`infc'" _col(15) "带截距项" _col(35) r(lagm) _col(55) "`result'"
			}
			di _col(4) "{hline 57}"
			local ordnum=`ordnum'+1
		}
		
		 //平衡长面板的LLC检验
		if "`dtatyp1'" == "长面板" & "`dtatyp2'" == "平衡" & `gapif'==0 {
			di in white "`ordnum'.LLC检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 96}"
			di _col(5) "信息准则" _col(14) "核函数" _col(32) "带宽选择算法" _col(52) "检测类型" _col(77) "平均滞后差分阶数" _col(94) "结果"
			di _col(4) "{hline 96}"
			local adfltr=0
			local adfldr=0
			local adflnoc=0
			local bartletttr=0
			local bartlettdr=0
			local parzentr=0
			local parzendr=0
			local quadraticspectraltr=0
			local quadraticspectraldr=0
			foreach infc in aic bic hqic{
				qui xtunitroot llc `var',tr lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p' > 0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adfltr=`adfltr'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				qui xtunitroot llc `var', lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p' > 0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adfldr=`adfldr'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
				qui xtunitroot llc `var', nocons lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adflnoc=`adflnoc'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				foreach knl in bartlett parzen quadraticspectral {
					qui xtunitroot llc `var',tr lags(`infc' `maxlags') kernel(`knl' nwest) 
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'tr=``knl'tr'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var', lags(`infc' `maxlags') kernel(`knl' nwest)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'dr=``knl'dr'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var', nocons lags(`infc' `maxlags') kernel(`knl' nwest)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p'>0.05 {
						local result "非平稳"
						local p=0.05
					}
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				}
				foreach knl in bartlett parzen quadraticspectral {
					qui xtunitroot llc `var',tr lags(`infc' `maxlags') kernel(`knl' llc) 
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'tr=``knl'tr'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var', lags(`infc' `maxlags') kernel(`knl' llc)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'dr=``knl'dr'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var', nocons lags(`infc' `maxlags') kernel(`knl' llc)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p'>0.05 {
						local result "非平稳"
						local p=0.05
					}
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				}
			}
			local adfltr=round(`adfltr'/3,1)
			local adfldr=round(`adfldr'/3,1)
			local adflnoc=round(`adflnoc'/3,1)
			local bartletttr=round(`bartletttr'/6,1)
			local bartlettdr=round(`bartlettdr'/6,1)
			local parzentr=round(`parzentr'/6,1)
			local parzendr=round(`parzendr'/6,1)
			local quadraticspectraltr=round(`quadraticspectraltr'/6,1)
			local quadraticspectraldr=round(`quadraticspectraldr'/6,1) 
			di _col(4) "{hline 96}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 96}"
			di _col(5) "信息准则" _col(14) "核函数" _col(32) "带宽选择算法" _col(52) "检测类型" _col(77) "平均滞后差分阶数" _col(94) "结果"
			di _col(4) "{hline 96}"
			local adfltrdm=0
			local adfldrdm=0
			local adflnocdm=0
			local bartletttrdm=0
			local bartlettdrdm=0
			local parzentrdm=0
			local parzendrdm=0
			local quadraticspectraltrdm=0
			local quadraticspectraldrdm=0
			foreach infc in aic bic hqic{
				qui xtunitroot llc `var',tr demean lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p' > 0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adfltrdm=`adfltrdm'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				qui xtunitroot llc `var',demean lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p' > 0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adfldrdm=`adfldrdm'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
				qui xtunitroot llc `var',nocons demean lags(`infc' `maxlags')
				local p=r(p_tds)
				while `p'<0.05 {
					local result "平稳"
					local p=0.05
				}
				while `p'>0.05 {
					local result "非平稳"
					local p=0.05
				}
				local adflnocdm=`adflnocdm'+r(adf_lagm)
				di _col(5) "`infc'" _col(14) "无" _col(32) "无" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				
				foreach knl in bartlett parzen quadraticspectral {
					qui xtunitroot llc `var',tr demean lags(`infc' `maxlags') kernel(`knl' nwest) 
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'trdm=``knl'trdm'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var',demean lags(`infc' `maxlags') kernel(`knl' nwest)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'drdm=``knl'drdm'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var',nocons demean lags(`infc' `maxlags') kernel(`knl' nwest)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p'>0.05 {
						local result "非平稳"
						local p=0.05
					}
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Newey&West(1994)" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				}
				foreach knl in bartlett parzen quadraticspectral {
					qui xtunitroot llc `var',tr demean lags(`infc' `maxlags') kernel(`knl' llc) 
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'trdm=``knl'trdm'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "带个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var',demean lags(`infc' `maxlags') kernel(`knl' llc)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p' > 0.05 {
						local result "非平稳"
						local p=0.05
					}
					local `knl'drdm=``knl'drdm'+r(adf_lagm)
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "只带个体固定效应" _col(77) r(adf_lagm) _col(94) "`result'"
					qui xtunitroot llc `var',nocons demean lags(`infc' `maxlags') kernel(`knl' llc)
					local p=r(p_tds)
					while `p'<0.05 {
						local result "平稳"
						local p=0.05
					}
					while `p'>0.05 {
						local result "非平稳"
						local p=0.05
					}
					di _col(5) "`infc'" _col(14) "`knl'" _col(32) "Levin,Lin&Chu(2002)" _col(52) "无个体固定效应与时间趋势" _col(77) r(adf_lagm) _col(94) "`result'"
				}
			}
			local adfltrdm=round(`adfltrdm'/3,1)
			local adfldrdm=round(`adfldrdm'/3,1)
			local adflnocdm=round(`adflnocdm'/3,1)
			local bartletttrdm=round(`bartletttrdm'/6,1)
			local bartlettdrdm=round(`bartlettdrdm'/6,1)
			local parzentrdm=round(`parzentrdm'/6,1)
			local parzendrdm=round(`parzendrdm'/6,1)
			local quadraticspectraltrdm=round(`quadraticspectraltrdm'/6,1)
			local quadraticspectraldrdm=round(`quadraticspectraldrdm'/6,1) 
			di _col(4) "{hline 95}"
			local ordnum=`ordnum'+1
		}
		
		 //平衡短面板的HT检验
		if "`dtatyp1'" == "短面板" & "`dtatyp2'" == "平衡" & `gapif'==0 {
			di in white "`ordnum'.HT检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 32}"
			di _col(5) "检测类型" _col(30) "结果"
			di _col(4) "{hline 32}"
			qui xtunitroot ht `var',tr
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) "`result'"
			qui xtunitroot ht `var'
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) "`result'"
			qui xtunitroot ht `var',nocons
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) "`result'"
			di _col(4) "{hline 32}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 32}"
			di _col(5) "检测类型" _col(30) "结果"
			di _col(4) "{hline 32}"
			qui xtunitroot ht `var',tr demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) "`result'"
			qui xtunitroot ht `var',demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) "`result'"
			qui xtunitroot ht `var',nocons demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) "`result'"
			di _col(4) "{hline 32}"
			local ordnum=`ordnum'+1
		}
		
		 //长面板的ADF_Fisher检验
		if "`dtatyp1'" == "长面板" {
			di in white "`ordnum'.ADF_Fisher检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(25) "平均滞后差分阶数" _col(45) "统计量综合方法" _col(60) "结果"
			di _col(4) "{hline 62}"
			local adfl=`adfltr'
			qui xtunitroot fisher `var',dfuller tr lags(`adfl')
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			local adfl=`adfldr'
			qui xtunitroot fisher `var',dfuller dr lags(`adfl')
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			di _col(4) "{hline 62}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(25) "平均滞后差分阶数" _col(45) "统计量综合方法" _col(60) "结果"
			di _col(4) "{hline 62}"
			local adfl=`adfltrdm'
			qui xtunitroot fisher `var',dfuller tr lags(`adfl') demean
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `adfl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			local adfl=`adfldrdm'
			qui xtunitroot fisher `var',dfuller dr lags(`adfl') demean
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `adfl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			di _col(4) "{hline 61}"
			local ordnum=`ordnum'+1
		}
		
		 //长面板的PP_Fisher检验
		if "`dtatyp1'" == "长面板" {
			di in white "`ordnum'.PP_Fisher检验:"
			local ppl=int(4*(`numt'/100)^(2/9))
			di "  (1)直接进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(25) "平均滞后差分阶数" _col(45) "统计量综合方法" _col(60) "结果"
			di _col(4) "{hline 62}"
			qui xtunitroot fisher `var',pperron tr lags(`ppl')
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			qui xtunitroot fisher `var',pperron lags(`ppl')
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			di _col(4) "{hline 62}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(25) "平均滞后差分阶数" _col(45) "统计量综合方法" _col(60) "结果"
			di _col(4) "{hline 62}"
			qui xtunitroot fisher `var',pperron tr lags(`ppl') demean
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带截距与时间趋势项" _col(25) `ppl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			qui xtunitroot fisher `var',pperron lags(`ppl') demean
			local p=r(p_P)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆卡方变换" _col(60) "`result'"
			local p=r(p_Z)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆正态变换" _col(60) "`result'"
			local p=r(p_L)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "逆逻辑变换" _col(60) "`result'"
			local p=r(p_Pm)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带截距项" _col(25) `ppl' _col(45) "修正逆卡方变换" _col(60) "`result'"
			di _col(4) "{hline 61}"
			local ordnum=`ordnum'+1
		}
		
		 //平衡长面板的Breitung检验
		if "`dtatyp1'" == "长面板" & "`dtatyp2'" == "平衡" & `gapif'==0 {
			di in white "`ordnum'.Breitung检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(30) "预白化滞后阶数" _col(45) "截面相关稳健" _col(60) "结果"
			di _col(4) "{hline 62}"
			local adfl=max(`adfltr'-1,0)
			qui xtunitroot breitung `var',tr lags(`adfl')
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',tr lags(`adfl') r
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			local adfl=max(`adfldr'-1,0)
			qui xtunitroot breitung `var',lags(`adfl')
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',lags(`adfl') r
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			local adfl=max(`adflnoc'-1,0)
			qui xtunitroot breitung `var',nocons lags(`adfl')
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',nocons lags(`adfl') r
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			di _col(4) "{hline 62}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 62}"
			di _col(5) "检测类型" _col(30) "预白化滞后阶数" _col(45) "截面相关稳健" _col(60) "结果"
			di _col(4) "{hline 62}"
			local adfl=max(`adfltrdm'-1,0)
			qui xtunitroot breitung `var',tr lags(`adfl') demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',tr lags(`adfl') r demean
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "带个体固定效应与时间趋势" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			local adfl=max(`adfldrdm'-1,0)
			qui xtunitroot breitung `var',lags(`adfl') demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',lags(`adfl') r demean
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "只带个体固定效应" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			local adfl=max(`adflnocdm'-1,0)
			qui xtunitroot breitung `var',nocons lags(`adfl') demean
			local p=r(p)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) `adfl' _col(45) "不使用" _col(60) "`result'"
			qui xtunitroot breitung `var',nocons lags(`adfl') r demean
			local p=r(p_lrobust)
			while `p'<0.05{
				local result "平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "非平稳"
				local p=0.05
			}
			di _col(5) "无个体固定效应与时间趋势" _col(30) `adfl' _col(45) "使用" _col(60) "`result'"
			di _col(4) "{hline 62}"
			local ordnum=`ordnum'+1
		}
		
		 //平衡长面板的Hadri_LM检验
		if "`dtatyp1'" == "长面板" & "`dtatyp2'" == "平衡" & `gapif'==0 {
			di in white "`ordnum'.Hadri_LM检验:"
			di "  (1)直接进行检验:"
			di _col(4) "{hline 65}"
			di _col(5) "核函数" _col(23) "检测类型" _col(38) "滞后阶数" _col(48) "截面相关稳健" _col(63) "结果"
			di _col(4) "{hline 65}"
			qui xtunitroot hadri `var',tr r
			local p=r(p)
			while `p'<0.05{
				local result "非平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "平稳"
				local p=0.05
			}
			di _col(5) "无" _col(23) "带时间趋势项" _col(38) "无" _col(48) "使用" _col(63) "`result'"
			qui xtunitroot hadri `var',r
			local p=r(p)
			while `p'<0.05{
				local result "非平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "平稳"
				local p=0.05
			}
			di _col(5) "无" _col(23) "无时间趋势项" _col(38) "无" _col(48) "使用" _col(63) "`result'"
			foreach knl in bartlett parzen quadraticspectral{
				local adfl= ``knl'tr'
				qui xtunitroot hadri `var',tr kernel(`knl' `adfl')
				local p=r(p)
				while `p'<0.05{
					local result "非平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "平稳"
					local p=0.05
				}
				di _col(5) "`knl'" _col(23) "带时间趋势项" _col(38) `adfl' _col(48) "不使用" _col(63) "`result'"
				local adfl= ``knl'dr'
				qui xtunitroot hadri `var',kernel(`knl' `adfl')
				local p=r(p)
				while `p'<0.05{
					local result "非平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "平稳"
					local p=0.05
				}
				di _col(5) "`knl'" _col(23) "无时间趋势项" _col(38) `adfl' _col(48) "不使用" _col(63) "`result'"
			}
			di _col(4) "{hline 65}"
			di "  (2)将面板数据减去各截面单位的均值进行检验:"
			di _col(4) "{hline 65}"
			di _col(5) "核函数" _col(23) "检测类型" _col(38) "滞后阶数" _col(48) "截面相关稳健" _col(63) "结果"
			di _col(4) "{hline 65}"
			qui xtunitroot hadri `var',tr r demean
			local p=r(p)
			while `p'<0.05{
				local result "非平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "平稳"
				local p=0.05
			}
			di _col(5) "无" _col(23) "带时间趋势项" _col(38) "无" _col(48) "使用" _col(63) "`result'"
			qui xtunitroot hadri `var',r demean
			local p=r(p)
			while `p'<0.05{
				local result "非平稳"
				local p=0.05
			}
			while `p'>0.05{
				local result "平稳"
				local p=0.05
			}
			di _col(5) "无" _col(23) "无时间趋势项" _col(38) "无" _col(48) "使用" _col(63) "`result'"
			foreach knl in bartlett parzen quadraticspectral{
				local adfl= ``knl'trdm'
				qui xtunitroot hadri `var',tr kernel(`knl' `adfl') demean
				local p=r(p)
				while `p'<0.05{
					local result "非平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "平稳"
					local p=0.05
				}
				di _col(5) "`knl'" _col(23) "带时间趋势项" _col(38) `adfl' _col(48) "不使用" _col(63) "`result'"
				local adfl= ``knl'dr'
				qui xtunitroot hadri `var',kernel(`knl' `adfl') demean
				local p=r(p)
				while `p'<0.05{
					local result "非平稳"
					local p=0.05
				}
				while `p'>0.05{
					local result "平稳"
					local p=0.05
				}
				di _col(5) "`knl'" _col(23) "无时间趋势项" _col(38) `adfl' _col(48) "不使用"_col(63) "`result'"
			}
			di _col(4) "{hline 65}"
			local ordnum=`ordnum'+1
		}
		
		//短面板非平衡有GAP的情况
		if "`dtatyp1'" == "短面板" & "`dtatyp2'" == "非平衡" & `gapif'==1 {
		 	di in white "您的数据是短面板非平衡且有gaps的数据，没有任何一种检验适合."
		} 
		if `gapif'==1{
			di in white "如果您能补全gap,可以再来试一试,会有更多结果."
		}
	}
	di in blue "您布置的任务已经完成，请您过目~♥"
end